跳到主要内容

方法论 之 你会问问题吗?

方法论

在软件行业里面,如果你遇见有及时更新的说明书的或详尽的文档,就像野生动物一样珍稀(当然一些著名的开源软件情况好一些)。这个现象比较复杂。如果我遇到一个软件,它能有文档,那我一定是不吝惜时间去阅读的。阅读的核心不在于了解具体的技术细节,调用方法或操作方法,而在于了解这个工具要去解决什么样的问题,以及它解决问题的具体思路,这样我才能够更好的使用这个工具。

本系列也会有自己看待问题,解决问题的一套方法。如果我们能够理解这套思路,那么其余技术问题,只是细节问题,技术问题和细节问题是整个解决问题过程中在难度上来说相对来说最简单的(虽然时间上不一定花的少)。

下面说的也许看起来像常识。没错,它们的确是常识。但你我非常有可能在整个分析过程中会违背这些常识,而有时候会有意无意的忽略这些重要的常识。我在这整个系列开始的地方就提起这些内容,是认为这些常识要比本系列中的其他内容更为重要。

你的问题是什么,能更详细点吗?能再详细一点吗?

这一点看起来好像有点傻,但其实不是。你的问题越清晰,你的下一步动作就越清晰。

为什么问题要那么清晰呢?那是因为对于不同要求,不同目的的问题,有不同成本,不同难度,不同规模的解决方案。

我这里给你提供的只能是一个特定的工具箱。一个能够解决某一类,或某几类问题的工具箱。这个工具箱不能解决所有的问题,甚至诚实的讲,只能够解决一小部分问题。

举个例子来说,你想知道中国人口的变化。

这个问题就有点太粗略了,你需要再细化这个问题。比如只是需要一个谈资,一个话题,那么直接寻找最有可能知道这个答案的人就可以了;如果你要研究老龄化问题,那么除了知道人口总量的数据,你还需要知道人口的性别、年龄结构,人口的素质(出生率,死亡率等),人口的城乡结构,甚至是人口的区域性结构;如果你其实想知道的是某某保健品或医药产品的销售趋势,那么你大概关心的就是特定的一个细分层级的人口变化以及相关结构;如果你要研究人口变化对经济的影响,那么你可能需要的又是另外一套不同的数据以及方案了。

甚至还有一种可能,而且可能性还比较大,你问的问题都是错的。

问问题很简单,但会问问题是一个很高级的技能,Eric Steven Raymond曾写过一篇稍长的文章专门教你怎么提问 --《提问的智慧(How To Ask Questions The Smart Way)》,这篇文章在开源社区内流行了多年,被翻译为多个语言,广为人知并奉为经典。程序员一般读这种书感觉很爽 -- 终于有人能把我们心底的话说出来了,但新手看了这篇文章可能不太舒服,有两个著名的词,STFW(去搜寻下啊)以及RTFM(去读说明书啊)就是出自此文。

一种解决问题的办法

《程序员修炼之道》中介绍过一种叫做Rubber duck debugging(橡皮鸭调试法)的概念,也和问问题有关。当你遇到问题难以解决的问题的时候,找一只橡皮鸭(西方国家常见泡澡玩具),然后向它解释你的问题,你的想法,当你解释的足够详尽和充分的时候,你的问题的解决方案也就相对来说比较清晰和明了了。

橡皮鸭 rubber duck

问问题的过程其实就是你理解问题的过程。在你理解问题之前,不要开始考虑任何解决方案。

问的详尽一点,再详尽一点。甚至是, 能忽略这个问题吗?

上面的例子中是"你的问题", 在很多时候, 我们是去解决别人问题的。那么怎样去清晰了解别人的问题、需求, 和上面讲的过程是一样的. 我们能对别人的问题问的详尽一点,再详尽一点。甚至是, 能让别人忽略这个问题吗?